package data;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
    protected static String driver="com.mysql.jdbc.Driver";//加载驱动
//    protected static String url="jdbc:mysql://localhost:3306/tsgl?characterEncoding=utf8";//选择需要使用的数据库
//    jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf8
//    protected static String url="jdbc:mysql://localhost:3306/tsgl?useUnicode=true&characterEncoding=UTF-8";//选择需要使用的数据库
    protected static String url="jdbc:mysql://localhost:3306/tsgl?useUnicode=true&characterEncoding=UTF-8";
    protected static String dbUSer="root";
    protected static String dbPwd="123456";
    public static Connection conn=null;//声明与数据库连接对象

    //构造方法：用于加载驱动，创建与数据库的连接；
    private BaseDao(){
        try {
        if (conn == null) {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, dbUSer, dbPwd);
        } else {
            return;
        }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //成员方法1：创建执行对象，执行查询操作
    public static ResultSet executeQuery(String sql){
        if (sql!=null){
            if (conn==null){
                new BaseDao();
            }
            try {
                return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(ChangeString.GBKToISO(sql));
            } catch (SQLException e) {
                System.out.println("查询失败");
                e.printStackTrace();
                return null;
            }
        }else{
            System.out.println("查询语句为空！");
            return null;
        }
    }
    //成员方法2：创建执行对象，执行更新操作
    public static int executeUpdate(String sql){
        if (sql!=null){
            if (conn==null){
                new BaseDao();
            }
            try {
                return conn.createStatement().executeUpdate(ChangeString.GBKToISO(sql));
            } catch (SQLException e) {
                System.out.println("更新失败");
                e.printStackTrace();
                return -1;
            }
        }else{
            System.out.println("更新语句为空！");
            return -1;
        }
    }
    //成员方法3：关闭与数据库的连接
    public static void close(){
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                return;
            }
        }else {
            return;
        }
    }
}
